package DAOJPA;


import gestionnaire.Utilisateur;

import java.util.List;

import DAO.DAO;
import DAO.DAOUtilisateur;

public class DAOUtilisateurJPA extends DAO implements DAOUtilisateur{

	
	 static private DAOUtilisateurJPA instance = null;
		
		private DAOUtilisateurJPA() {
		}
			static public DAOUtilisateur getInstance() {
			 	if (instance == null)
					instance = new DAOUtilisateurJPA();
				 	
			 	return instance;
		}
	
	@Override
	public Utilisateur getUtilisateur(int code) {
		// TODO Auto-generated method stub
		Utilisateur utilisateur = DAO.getManager().find(Utilisateur.class, code);
		return utilisateur;
	}

	@Override
	public List<Utilisateur> loadAll() {
		// TODO Auto-generated method stub
		return DAO.getManager().createQuery("SELECT a FROM Utilisateur a",Utilisateur.class).getResultList();

	}

	@Override
	public int getNombreUtilisateur() {
		// TODO Auto-generated method stub
		return this.loadAll().size();
	}

	@Override
	public void save(Utilisateur a) {
		// TODO Auto-generated method stub
		
		DAO.getManager().persist(a);
		DAO.commit();
		
	}

	@Override
	public void delete(Utilisateur a) {
		// TODO Auto-generated method stub
		if(a.getCode_per() == -1) throw new IllegalArgumentException();
		getManager().remove(a);
		DAO.commit();
		a.setCode_per(-1);
	}
	
	
	@Override
	public List<Utilisateur> getUtilisateur(String id) {
		// TODO Auto-generated method stub
		return DAO.getManager().createQuery("SELECT a FROM Utilisateur a WHERE  a.identifiant = :id ", Utilisateur.class).setParameter("id", id).getResultList();	
	}
	
	
	public static boolean login(String user, String password) {
        
		if (DAO.getManager().createQuery("SELECT a FROM Utilisateur a WHERE  a.identifiant LIKE :id AND a.motDePasse LIKE :id2", Utilisateur.class).setParameter("id", user).setParameter("id2", password).getResultList().size() == 1 )
		{
			return true ;			
		}
			return false;
	
	}

}
